/*
 * @Descripttion: 
 * @Author: ziwei
 * @Date: 2022-08-14 14:29:58
 * @LastEditors: ziwei
 * @LastEditTime: 2022-08-21 16:44:28
 */
/**
 * call()方法在使用一个指定的this和若干个指定的参数值的前提下调用某个函数的方法
 */
// var foo = {
//     value:1
// }
// function bar(){
//     console.log(this.value)
// }
// bar.call(foo)

//实现
Function.prototype.call2 = function(context){
    var context = context || window;
    context.fn = this

    var args = []
    for(var i=1,len=arguments.length;i<len;i++){
        args.push(`arguments['${i}']`)
    }

    var result = eval(`context.fn(${args})`)
    delete context.fn
    console.log(args);
    return result
}
//测试一下
var value = 2
function bar(name,age){
  console.log(this.value)
  return{
    value:this.value,
    name,
    age
  }
}
bar.call2(null) //2
a.call([],1)